#include <iostream>

using std::cout;
using std::endl;

//单例模式的设计需求：一个类只能创建一个对象（而不是一类对象）
//，对象不能有两个
class Singleton
{
public:
    static Singleton &getInstance()
    {
        //C++11中，可以直接创建一个静态对象就可以了
        //(避免重复创建对象)
        static Singleton instance;
        return instance;
    }

private:
    Singleton()
    {
        cout << "Singleton()" << endl;
    }

    ~Singleton()
    {
        cout << "~Singleton()" << endl;
    }
    
};

int main(int argc, char *argv[])
{
    Singleton &s1 = Singleton::getInstance();
    Singleton &s2 = Singleton::getInstance();
    printf("&s1 = %p\n", &s1);
    printf("&s2 = %p\n", &s2);


    return 0;
}

